package com.dg.util;

import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间工具类
 */
public class DateUtil {

    private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";

    //示例
    public static void main(String[] args) {
        Date date = new Date();
        String dateFormat1 = DateUtil.dateFormat(date,"yyyy-MM-dd");
        System.out.println(dateFormat1);

        String dateFormat2 = DateUtil.dateFormat(date);
        System.out.println(dateFormat2);

        String str1 = "2018-10-31 11:16:30";
        Date date1 = DateUtil.strToDate(str1);
        System.out.println(date1);

        String str2 = "2018年10月30日 11:16:30";
        Date strToDate = DateUtil.strToDate(str2, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(strToDate);

    }

    /**
     * 时间格式化，格式默认为yyyy-MM-dd HH:mm:ss
     * @param date  date对象
     * @return
     */
    public static String dateFormat(Date date){
        return dateFormat(date,null);
    }

    /**
     * 时间格式化，如果不传时间格式，则默认为yyyy-MM-dd HH:mm:ss
     * @param date      date对象
     * @param format    时间格式
     * @return
     */
    public static String dateFormat(Date date, String format){
        if(StringUtils.isBlank(format)){
            format = FORMAT;
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        return simpleDateFormat.format(date);
    }

    /**
     * 字符串转时间，时间格式则默认为yyyy-MM-dd HH:mm:ss
     * @param str   时间字符串
     * @return
     */
    public static Date strToDate(String str){
         return strToDate(str,null);
    }

    /**
     * 字符串转时间，如果不指定时间格式，时间格式则默认为yyyy-MM-dd HH:mm:ss
     * @param str       时间字符串
     * @param format    时间格式
     * @return
     */
    public static Date strToDate(String str, String format){
        if(StringUtils.isBlank(format)){
            format = FORMAT;
        }
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(format);
        try {
            Date date = simpleDateFormat.parse(str);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }



}
